package org.apache.lucene.search;

import org.apache.lucene.search.SortField;

/**
 * 自定义打分抽象类
 *
 */
public abstract class CScorer {

    protected SortField[] fields;

    SortField[] getSortField() {
        return fields;
    }

    protected float correctLuceneScorerWhileCollect(float score) {
        return score;
    }

    /**
     * 通过各个字段值计算业务分
     * @param 要进行比较的字段值
     * @return 业务分
     */
    protected abstract float calculateBusinessScorer(Comparable[] values);

    /**
     * 通过相关度得分和业务分计算总分
     * @param 相关度的最高得分
     * @param 相关度得分
     * @param 业务逻辑得分
     * @return 总分
     */
    protected abstract float calculateTotalScorer(float maxScore,
            float luceneScore, float businessScore);
    
}